<?php defined('SYSPATH') or die('No direct script access.');

abstract class Model_ShopParser_Abstract
{ 
    protected static $_instance = null;      // Экземпляр класса - реализация Синглтон
    
    /**
    * Защищенный конструктор - реализация Синглтон
    * 
    * @return Model_ProductParser_YML
    */
    protected function __construct()
    {
    }
    
    /**
    * Получить экземпляр класса - реализация Синглтон
    */
    public static function instance()
    {
        if (self::$_instance !== null) {
            return self::$_instance;
        }   
        
        static::$_instance = new static;
        return static::$_instance; 
    }
    
    protected function _cut_str($start, $stop, &$str)
    {      
        $spos = strpos($str, $start);      //Поиск начала
        
        if ($spos === false) {
            return null;
        }
        
        $spos = $spos + strlen($start);     //Удлиняем позицию на длину строки, чтобы не включать ее в результат
        $text = substr($str, $spos);       //Режем строку от этой позиции
        $end_pos = strpos($text, $stop);   // Ищем конец в полученной строке
        
        if ($end_pos === false) {
            return null;
        }
        
        $text = substr($text, 0, $end_pos);    //Режем по конечной позиции     
        $str = str_replace($start . $text . $stop, '', $str);   // Удаляем найденное
        
        return trim($text);                                                                                                                                            
    }
    
    protected function _download_file($url, $filename)
    {
        file_put_contents($filename, fopen($url, 'r'));
    }
}
